{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "9ca234f7-84b7-4107-9bcd-74f5a4ffd07d",
   "metadata": {},
   "source": [
    "# `ipywidgets` Interactive Demo\n",
    "\n",
    "Simple demonstration of rendering Interactive widgets in a `jupyterlite` notebook.\n",
    "\n",
    "`ipywidgets` can be installed in this deployment (it provides the @jupyter-widgets/jupyterlab-manager federated extension), but you will need to make your own deployment to have access to other interactive widgets libraries."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d62fba6e",
   "metadata": {},
   "outputs": [],
   "source": [
    "%pip install -q ipywidgets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3bab23f8-de91-43c9-9cec-84f4924425fc",
   "metadata": {},
   "outputs": [],
   "source": [
    "from ipywidgets import IntSlider"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a15c5acb-ee72-4005-8761-5693db853f22",
   "metadata": {},
   "outputs": [],
   "source": [
    "slider = IntSlider()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8ba89682-e0d7-4bd2-961a-f9956850fd5a",
   "metadata": {},
   "outputs": [],
   "source": [
    "slider"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "50510ade-668f-4477-8cb2-41574609ac73",
   "metadata": {},
   "outputs": [],
   "source": [
    "slider"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7bac1ed8-8c77-426b-a781-1c1a6cfad829",
   "metadata": {},
   "outputs": [],
   "source": [
    "slider.value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "976a70a0-e99d-4c20-b005-f59bbba10f85",
   "metadata": {},
   "outputs": [],
   "source": [
    "slider.value = 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3134c76e-cffb-4701-8230-e6c4bfbbfdb9",
   "metadata": {},
   "outputs": [],
   "source": [
    "from ipywidgets import IntText, link"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f7b3fe0a-5695-4ef2-a573-40785e68fbae",
   "metadata": {},
   "outputs": [],
   "source": [
    "text = IntText()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5e2fd50e-19e0-4e20-a1f7-ad65400ec636",
   "metadata": {},
   "outputs": [],
   "source": [
    "text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bb3bedce-7311-48c0-aeab-8fe3aa554b92",
   "metadata": {},
   "outputs": [],
   "source": [
    "link((slider, 'value'), (text, 'value'));"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "71b68c3e-184e-4320-9513-d0bc72800a85",
   "metadata": {},
   "source": [
    "# `bqplot` Interactive Demo\n",
    "\n",
    "Plotting in JupyterLite\n",
    "\n",
    "`bqplot` can be installed in this deployment (it provides the bqplot federated extension), but you will need to make your own deployment to have access to other interactive widgets libraries."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "119eb9a3-ac98-42c3-98d4-1ac460eb75d3",
   "metadata": {},
   "outputs": [],
   "source": [
    "%pip install -q bqplot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "23b32857-2958-4083-b16a-ac26cd2408d4",
   "metadata": {},
   "outputs": [],
   "source": [
    "from bqplot import *\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "np.random.seed(0)\n",
    "\n",
    "n = 100\n",
    "\n",
    "x = list(range(n))\n",
    "y = np.cumsum(np.random.randn(n)) + 100.\n",
    "\n",
    "sc_x = LinearScale()\n",
    "sc_y = LinearScale()\n",
    "\n",
    "lines = Lines(\n",
    "    x=x, y=y,\n",
    "    scales={'x': sc_x, 'y': sc_y}\n",
    ")\n",
    "ax_x = Axis(scale=sc_x, label='Index')\n",
    "ax_y = Axis(scale=sc_y, orientation='vertical', label='lines')\n",
    "\n",
    "Figure(marks=[lines], axes=[ax_x, ax_y], title='Lines')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ddb6b44e-06a0-4049-a79d-33ffc90d5a03",
   "metadata": {},
   "outputs": [],
   "source": [
    "lines.colors = ['green']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e367e7fb-b403-41aa-9629-224827ec3005",
   "metadata": {},
   "outputs": [],
   "source": [
    "lines.fill = 'bottom'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d4a167f3-07c4-4880-92f5-7fcdea0c61c6",
   "metadata": {},
   "outputs": [],
   "source": [
    "lines.marker = 'circle'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1d1342f7-ec08-4f53-84dc-d712226d9e46",
   "metadata": {},
   "outputs": [],
   "source": [
    "n = 100\n",
    "\n",
    "x = list(range(n))\n",
    "y = np.cumsum(np.random.randn(n))\n",
    "\n",
    "sc_x = LinearScale()\n",
    "sc_y = LinearScale()\n",
    "\n",
    "bars = Bars(\n",
    "    x=x, y=y,\n",
    "    scales={'x': sc_x, 'y': sc_y}\n",
    ")\n",
    "ax_x = Axis(scale=sc_x, label='Index')\n",
    "ax_y = Axis(scale=sc_y, orientation='vertical', label='bars')\n",
    "\n",
    "Figure(marks=[bars], axes=[ax_x, ax_y], title='Bars', animation_duration=1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f86bbcfb-5b02-4700-b8d6-f90068893b55",
   "metadata": {},
   "outputs": [],
   "source": [
    "bars.y = np.cumsum(np.random.randn(n))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python (Pyodide)",
   "language": "python",
   "name": "python"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "python",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8"
  },
  "orig_nbformat": 4,
  "toc-showcode": false
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
